A domain or other large network environment can have hundreds or thousands of related computing devices, each of which has some element of trust for the other related computing devices. As used herein, a domain includes a collection of computing devices that share a common domain database and security policy, where each domain has a unique name. It is useful to divide up the computing devices into smaller, manageable groups. These groups can be useful for system management, for deploying applications or data across hundreds or thousands of related computing devices in the domain, and for distributing computing problems among related computing devices in the groups.
The efficiency of dividing related computing devices into groups can be seen through examples. An application or data can be distributed to one related computing device in a group so that it can share its locally cached files with other related computing devices across the group, such as within a local network. Thus, a group can serve as a related computing device-based caching system. The caching system of the group allows application, data, and data processing tasks to be delivered in a peer-to-peer fashion between related computing devices within the group. For example, when a document needs to be distributed to thousands of users, the first related computing device to receive this document in a group is then able to serve it to other related computing devices in its group. Once other related computing devices receive the file, they can then serve the file to additional related computing devices in the group that are requesting it. As the number of related computing devices in a group that are able to serve others eventually expands, the document will be delivered faster without overwhelming the network or any single related computing device.
In another example where a related computing device can cache content for multiple users on the same Local Area Network (LAN), a series of video files may need to be sent to multiple users in a satellite office. By using one related computing device in a group to first retrieve the series of video files from a corporate server, and then distributing the series of video files in a peer-to-peer model (or using a group cache of the video files) within the group, there will be a significant reduction in the amount of Wide Area Network (WAN) traffic to the satellite office with the corporate server. As such, this kind of efficient distribution protects WAN bandwidth by delivering content to a group once, and allowing other employees to get the content from any related computing device on the LAN in a peer-to-peer fashion. Thus, the content only needs to cross the corporate server firewall and travel the WAN once and is distributed efficiently within the LAN in the satellite office(s). Note that any related computing device on the LAN can receive data, software, or a computing task either from the corporate backbone (e.g., corporate servers) on the WAN, or from any neighboring related computing device in the group from the LAN via peer-to-peer networking.
Since any one group can be configured to have a relatively small membership in a “peer-casting” application, the original related computing device that first receives an application is not overwhelmed with requests from its group peers and as more of the peers receive the application, other peers in the group can go to any group member that already has the application to get their own copy. Further, the load on the original corporate server is significantly reduced since the number of related computing devices that the original corporate server must directly communicate with is significantly reduced.
In some environments it may be easy to define a peer-casting group within which related computing devices can share data, software, and computing tasks. For example, if there are only a few ‘close by’ related computing devices, then specifying these related computing devices as being in a single group is a fairly easy chore for a system or network administrator. In a domain or other large network environment, however, there may be hundreds or thousands of related computing devices such that it may be all but impossible to directly create and manage these groups. A problem exists in that related computing devices are not dynamically formed into groups, and groups of related computing devices are not maintained automatically. Rather, intervention by a system or network administrator is required. It would be an advance in the art to dynamically create and manage groupings of related computing devices within a domain without requiring the attention of a system or network administrator.